/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pictionary2;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.net.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.AncestorEvent;
import javax.swing.event.AncestorListener;

/**
 *
 * @author Viper
 */
public class MSN extends JFrame{
    private JButton enviar;
    private JLabel miNombre;
    //private JLabel cont;
    private JPanel centro;
    private JPanel abajo;
    private JPanel izquierda;
    private JPanel derecha;
    private ArrayList contactos;
    private Contacto contactoActual;
    private PaintPanel paint;
    private EscuchadorEvento ee;
   // private Socket s;

    public MSN(String cS, EscuchadorEvento es) throws UnknownHostException, IOException{
        super(cS);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        //setSize(400,300);
        setResizable(true);
        setLayout(new BorderLayout());
        ee= es;

        contactos= new ArrayList();
        //**************************
        contactoActual = new Contacto("Prueba");
        contactos.add(contactoActual);
        //**************************
        //cont= new JLabel("Contactos");
        enviar= new JButton("Enviar");
        //conectar= new JButton("Conectar");
        miNombre= new JLabel("Nombre");
        paint= new PaintPanel(this);
        paint.setPreferredSize(new Dimension(500,500));
        paint.setBorder(BorderFactory.createLineBorder(Color.black, 10));
        ((Contacto)contactos.get(0)).getOtroMensaje().setEditable(false);
        ((Contacto)contactos.get(0)).getOtroMensaje().setLineWrap(true);
        ((Contacto)contactos.get(0)).getOtroMensaje().setWrapStyleWord(true);

        ((Contacto)contactos.get(0)).getMiMensaje().setPreferredSize(new Dimension(1000,100));
        ((Contacto)contactos.get(0)).getMiMensaje().addActionListener(
            new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                JButton btn= new JButton();
                btn.setActionCommand("enviar");
                e.setSource(btn);
                ee.actionPerformed(e);
            }
        }
        );

        //conectar.addActionListener(new Escuchador(0));
        //conectar.setActionCommand("conectar");
        enviar.setActionCommand("enviar");
//**        enviar.addActionListener(new EscuchadorI(1));
        enviar.addActionListener(ee);

        centro= new JPanel(new BorderLayout());
        abajo= new JPanel(new FlowLayout());
        izquierda= new JPanel(new BorderLayout());
        derecha= new JPanel(new BorderLayout());


        //izquierda.add(cont,BorderLayout.NORTH);
        //izquierda.add(((Contacto)contactos.get(0)).getBoton(),BorderLayout.CENTER);
        centro.add(miNombre,BorderLayout.NORTH);
        JPanel jp= new JPanel();
       // JTextArea ta = new JTextArea();
        //centro.add(new JScrollPane(ta),BorderLayout.CENTER);
       //** centro.add( ((Contacto)contactos.get(0)).getScroll(),BorderLayout.CENTER);
        centro.add( ((Contacto)contactos.get(0)).getOtroMensaje(),BorderLayout.CENTER);
        //abajo.add(conectar);
        abajo.add(((Contacto)contactos.get(0)).getMiMensaje());
        abajo.add(enviar);
        derecha.add(paint);
        abajo.setBackground(new Color(54, 165, 230));
        izquierda.setBackground(new Color(54, 165, 230));

        add(izquierda,BorderLayout.WEST);
        add(centro, BorderLayout.CENTER);
        add(abajo,BorderLayout.SOUTH);
        add(derecha,BorderLayout.EAST);
        setFocusable(true);
        //requestFocus();
        VentanaNombre vn= new VentanaNombre();
        while(!vn.getBan()){
            System.out.print("");
        }
        miNombre.setText(vn.getNombre());

        pack();
        setVisible(true);
    }

    public Contacto getContactoActual() {
        return contactoActual;
    }

    public void setContactoActual(Contacto contactoActual) {
        this.contactoActual = contactoActual;
    }

    public JLabel getMiNombre() {
        return miNombre;
    }

    public EscuchadorEvento getEe() {
        return ee;
    }

    public void setEe(EscuchadorEvento ee) {
        this.ee = ee;
    }

    public PaintPanel getPaint() {
        return paint;
    }

    public void setPaint(PaintPanel paint) {
        this.paint = paint;
    }



    //Socket s= new Socket("169.254.196.82",9999);


  /*  public void desconecta(){
        ps.close();
        s.close();
        }*/
/*
     class EscuchadorI implements ActionListener,Runnable{
         int num;
         Socket s;//= new Socket("localhost",9999);
         BufferedReader br;

         public EscuchadorI(int n) throws UnknownHostException, IOException{
             num=n;
             //s= new Socket("localhost",9999);
         }

         public void conecta() throws UnknownHostException, IOException {
             s= new Socket("localhost",9998);
             // BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

             // PrintStream ps = new PrintStream(s.getOutputStream());
        //     }

         //public void leer() throws IOException{
             br = new BufferedReader(new InputStreamReader(s.getInputStream()));
             String str= "";
             while(!str.equals("alto")){
                 str=br.readLine();
                // System.out.println("---------"+str);
                getContactoActual().setOtroMensaje(str);
            }
             //System.out.println("salio while hilo");
        }

        public void actionPerformed(ActionEvent e) {
        //throw new UnsupportedOperationException("Not supported yet.");
       // JOptionPane.showMessageDialog(null, "Adios");
        JButton btn = (JButton)e.getSource();
        String comando = btn.getActionCommand();
        try{

            if(comando.equals("conectar")){
               // conecta();
                Thread h;
                h = new Thread(new EscuchadorI(0));
                h.setPriority(Thread.MAX_PRIORITY);
                h.start();
            }else if(comando.equals("enviar")){
                Thread h;
                h = new Thread(new EscuchadorI(1));
                h.setPriority(Thread.MAX_PRIORITY);
                h.start();
                envia();
            }else if(comando.equals("limpiar")){
                 //texto.setText("");
            }
        } catch(Exception ex){
            System.out.println(ex.getMessage());
        }
        }

        public void run() {
            try{
                if(num==0){
                    conecta();
                }else{
                    envia();
                }
            }catch(Exception ex){
                System.out.println(ex.getMessage());
            }
         }

        private void envia() throws IOException {
            PrintStream ps = new PrintStream(s.getOutputStream());
            String st= getContactoActual().getMiMensaje().getText();
            getContactoActual().getMiMensaje().setText("");
            getContactoActual().getOtroMensaje().setText(getContactoActual().getOtroMensaje().getText()+"\n"+st);
            ps.println(st);
            ps.close();
        }
  }*/
}

